package com.azt.data.action;

import com.azt.provider.mapper.AdminMapper;
import com.xiaoleilu.hutool.util.StrUtil;
import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.ss.util.CellRangeAddress;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map;

/**
 * Created by timzou on 2018/3/29.
 */
@Controller
@RequestMapping("weekReport")
public class WeekReportAction {

    @Autowired
    private AdminMapper adminMapper;

    @RequestMapping("table")
    public String weekReport() {
        return "weekReport";
    }


    @RequestMapping("reportData")
    @ResponseBody
    public Map<String, Object> reportData(String st, String et , String year) {
        return getReportData(st, et, year);
    }

    private Map<String, Object> getReportData(String st, String et, String year) {
        Map<String, Object> map = new HashMap<>();
        if(StrUtil.isNotBlank(st) && StrUtil.isNotBlank(et)){
            map.putAll(adminMapper.selectEnquiryWeekReport(st, et));
            map.putAll(adminMapper.selectOrderWeekReport(st, et));
            map.putAll(adminMapper.selectSelfOrderWeekReport(st, et));
            map.putAll(adminMapper.selectProForWeek(st, et));
            map.putAll(adminMapper.selectPurForWeek(st, et));
            map.putAll(adminMapper.selectVipForWeek(st, et));
        }
        if(StrUtil.isNotBlank(year)){
            map.putAll(adminMapper.selectEnquiryYearReport(year));
            map.putAll(adminMapper.selectOrderYearReport(year));
            map.putAll(adminMapper.selectSelfOrderYearReport(year));
            map.putAll(adminMapper.selectPurForYear(year));
            map.putAll(adminMapper.selectProForYear(year));
            map.putAll(adminMapper.selectVipForYear(year));
        }
        map.putAll(adminMapper.selectEnquiryTotalReport());
        map.putAll(adminMapper.selectOrderTotalReport());
        map.putAll(adminMapper.selectSelfOrderTotalReport());
        map.putAll(adminMapper.selectPurForTotal());
        map.putAll(adminMapper.selectProForTotal());
        map.putAll(adminMapper.selectVipTotal());
        return map;
    }

    @RequestMapping("export")
    @ResponseBody
    public void exportWeekReport(HttpServletResponse response, String st, String et, String year) throws IOException {
        Map<String, Object> map = getReportData(st, et, year);


        // 第一步，创建一个webbook，对应一个Excel文件
        HSSFWorkbook wb = new HSSFWorkbook();
        // 第二步，在webbook中添加一个sheet,对应Excel文件中的sheet
        HSSFSheet sheet = wb.createSheet("数据周报");
        sheet.setDefaultColumnWidth(25);

        // 创建第0行 也就是标题
        HSSFRow row1 = sheet.createRow((int) 0);
        row1.setHeightInPoints(50);// 设备标题的高度
        // 第三步创建标题的单元格样式style2以及字体样式headerFont1
        HSSFCellStyle style2 = wb.createCellStyle();
        style2.setAlignment(HSSFCellStyle.ALIGN_CENTER);
        style2.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
        style2.setFillForegroundColor(HSSFColor.LIGHT_CORNFLOWER_BLUE.index);
        style2.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
        style2.setBorderLeft(HSSFCellStyle.BORDER_THIN);
        style2.setBorderRight(HSSFCellStyle.BORDER_THIN);
        style2.setBorderTop(HSSFCellStyle.BORDER_THIN);
        HSSFFont headerFont1 = (HSSFFont) wb.createFont(); // 创建字体样式
        headerFont1.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); // 字体加粗
        headerFont1.setFontName("黑体"); // 设置字体类型
        headerFont1.setFontHeightInPoints((short) 18); // 设置字体大小
        style2.setFont(headerFont1); // 为标题样式设置字体样式
        HSSFCell cell1 = row1.createCell(0);// 创建标题第一列
        sheet.addMergedRegion(new CellRangeAddress(0, 0, 0,
                3)); // 合并列标题
        cell1.setCellValue("“安装通”平台数据周报"); // 设置值标题
        cell1.setCellStyle(style2); // 设置标题样式
        HSSFCell cell01 = row1.createCell(1);// 创建标题第一列
        cell01.setCellStyle(style2);
        HSSFCell cell02 = row1.createCell(2);// 创建标题第一列
        cell02.setCellStyle(style2);
        HSSFCell cell03 = row1.createCell(3);// 创建标题第一列
        cell03.setCellStyle(style2);

        // 第四步，创建表头单元格样式 以及表头的字体样式
        HSSFCellStyle style = wb.createCellStyle();
        style.setWrapText(true);// 设置自动换行
        style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
        style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER); // 创建一个居中格式

        style.setBottomBorderColor(HSSFColor.BLACK.index);
        style.setBorderBottom(HSSFCellStyle.BORDER_THIN);
        style.setBorderLeft(HSSFCellStyle.BORDER_THIN);
        style.setBorderRight(HSSFCellStyle.BORDER_THIN);
        style.setBorderTop(HSSFCellStyle.BORDER_THIN);

        HSSFFont headerFont = (HSSFFont) wb.createFont(); // 创建字体样式
        headerFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); // 字体加粗
        headerFont.setFontName("黑体"); // 设置字体类型
        headerFont.setFontHeightInPoints((short) 14); // 设置字体大小
        style.setFont(headerFont); // 为标题样式设置字体样式


        // 创建第1行 也就是表头
        HSSFRow row = sheet.createRow((int) 1);
//        row.setHeightInPoints(37);// 设置表头高度
        HSSFCell cell10 = row.createCell(0);// 创建标题第一列
        HSSFCell cell11 = row.createCell(1);// 创建标题第一列
        cell11.setCellStyle(style);
        HSSFCell cell12 = row.createCell(2);// 创建标题第一列
        cell12.setCellStyle(style);
        sheet.addMergedRegion(new CellRangeAddress(1, 1, 0,
                1)); // 合并列标题
        sheet.addMergedRegion(new CellRangeAddress(1, 1, 2,
                3)); // 合并列标题
//        cell10.setCellValue("数据周期：");
        cell10.setCellValue("");
        cell10.setCellStyle(style);
        HSSFCell cell13 = row.createCell(2);// 创建标题第一列
        cell13.setCellValue(st + " 至 " + et);
        cell13.setCellStyle(style);
        HSSFCell cell1123 = row.createCell(3);// 创建标题第一列
        cell1123.setCellStyle(style);

        //创建第二行
        HSSFRow row2 = sheet.createRow((int) 2);
        HSSFCell cell20 = row2.createCell(0);// 创建标题第一列
        sheet.addMergedRegion(new CellRangeAddress(2, 2, 0,
                3)); // 合并列标题
        cell20.setCellValue("交易情况-询价单"); // 设置值标题
        cell20.setCellStyle(style2); // 设置标题样式
        HSSFCell cell21 = row2.createCell(1);// 创建标题第一列
        cell21.setCellStyle(style2);
        HSSFCell cell22 = row2.createCell(2);// 创建标题第一列
        cell22.setCellStyle(style2);
        HSSFCell cell23 = row2.createCell(3);// 创建标题第一列
        cell23.setCellStyle(style2);
        //创建第7行
        HSSFRow row7 = sheet.createRow((int) 7);
        HSSFCell cell70 = row7.createCell(0);// 创建标题第一列
        sheet.addMergedRegion(new CellRangeAddress(7, 7, 0,
                3)); // 合并列标题
        cell70.setCellValue("其中订单"); // 设置值标题
        cell70.setCellStyle(style2); // 设置标题样式
        HSSFCell cell71 = row7.createCell(1);// 创建标题第一列
        cell71.setCellStyle(style2);
        HSSFCell cell72 = row7.createCell(2);// 创建标题第一列
        cell72.setCellStyle(style2);
        HSSFCell cell73 = row7.createCell(3);// 创建标题第一列
        cell73.setCellStyle(style2);
        //创建第11行
        HSSFRow row11 = sheet.createRow((int) 11);
        HSSFCell cell110 = row11.createCell(0);// 创建标题第一列
        sheet.addMergedRegion(new CellRangeAddress(11, 11, 0,
                3)); // 合并列标题
        cell110.setCellValue("其中自营流水"); // 设置值标题
        cell110.setCellStyle(style2); // 设置标题样式
        HSSFCell cell111 = row11.createCell(1);// 创建标题第一列
        cell111.setCellStyle(style2);
        HSSFCell cell112 = row11.createCell(2);// 创建标题第一列
        cell112.setCellStyle(style2);
        HSSFCell cell113 = row11.createCell(3);// 创建标题第一列
        cell113.setCellStyle(style2);
        //创建第11行
        HSSFRow row17 = sheet.createRow((int) 17);
        HSSFCell cell17 = row17.createCell(0);// 创建标题第一列
        sheet.addMergedRegion(new CellRangeAddress(17, 17, 0,
                4)); // 合并列标题
        cell17.setCellValue("会员情况"); // 设置值标题
        cell17.setCellStyle(style2); // 设置标题样式
        HSSFCell cell171 = row17.createCell(1);// 创建标题第一列
        cell171.setCellStyle(style2);
        HSSFCell cell172 = row17.createCell(2);// 创建标题第一列
        cell172.setCellStyle(style2);
        HSSFCell cell173 = row17.createCell(3);// 创建标题第一列
        cell173.setCellStyle(style2);
        HSSFCell cell174 = row17.createCell(4);// 创建标题第一列
        cell174.setCellStyle(style2);


        //创建第三行
        HSSFRow row3 = sheet.createRow((int) 3);
        HSSFCell cell30 = row3.createCell(0);// 创建标题第一列
        cell30.setCellValue("指标"); // 设置标题
        cell30.setCellStyle(style); // 设置标题样式
        HSSFCell cell31 = row3.createCell(1);// 创建标题第一列
        cell31.setCellValue("数量"); // 设置标题
        cell31.setCellStyle(style); // 设置标题样式
        HSSFCell cell32 = row3.createCell(2);// 创建标题第一列
        cell32.setCellValue("金额"); // 设置标题
        cell32.setCellStyle(style); // 设置标题样式
        HSSFCell cell33 = row3.createCell(3);// 创建标题第一列
        cell33.setCellValue("客单价"); // 设置标题
        cell33.setCellStyle(style); // 设置标题样式

        //创建第四行
        HSSFRow row4 = sheet.createRow((int) 4);
        HSSFCell cell40 = row4.createCell(0);// 创建标题第一列
        cell40.setCellValue("历史累计发生数"); // 设置标题
        cell40.setCellStyle(style); // 设置标题样式
        HSSFCell cell41 = row4.createCell(1);// 创建标题第一列
        cell41.setCellValue(String.valueOf(map.get("quoteNumTotal"))); // 设置标题
        cell41.setCellStyle(style); // 设置标题样式
        HSSFCell cell42 = row4.createCell(2);// 创建标题第一列
        cell42.setCellValue(String.format("%.2f" , map.get("sumQuoteTotal"))); // 设置标题
        cell42.setCellStyle(style); // 设置标题样式
        HSSFCell cell43 = row4.createCell(3);// 创建标题第一列
        cell43.setCellValue(String.format("%.2f" , map.get("kdjTotal"))); // 设置标题
        cell43.setCellStyle(style); // 设置标题样式

        //创建第五行
        HSSFRow row5 = sheet.createRow((int) 5);
        HSSFCell cell50 = row5.createCell(0);// 创建标题第一列
        cell50.setCellValue(year + "年累计发生数"); // 设置标题
        cell50.setCellStyle(style); // 设置标题样式
        HSSFCell cell51 = row5.createCell(1);// 创建标题第一列
        cell51.setCellValue(String.valueOf(map.get("quoteNumYear"))); // 设置标题
        cell51.setCellStyle(style); // 设置标题样式
        HSSFCell cell52 = row5.createCell(2);// 创建标题第一列
        cell52.setCellValue(String.valueOf(String.format("%.2f" , map.get("sumQuoteYear")))); // 设置标题
        cell52.setCellStyle(style); // 设置标题样式
        HSSFCell cell53 = row5.createCell(3);// 创建标题第一列
        cell53.setCellValue(String.valueOf(String.format("%.2f" , map.get("kdjYear")))); // 设置标题
        cell53.setCellStyle(style); // 设置标题样式

        //创建第六行
        HSSFRow row6 = sheet.createRow((int) 6);
        HSSFCell cell60 = row6.createCell(0);// 创建标题第一列
        cell60.setCellValue("本周期累计发生数"); // 设置标题
        cell60.setCellStyle(style); // 设置标题样式
        HSSFCell cell61 = row6.createCell(1);// 创建标题第一列
        cell61.setCellValue(String.valueOf(map.get("quoteNumWeek"))); // 设置标题
        cell61.setCellStyle(style); // 设置标题样式
        HSSFCell cell62 = row6.createCell(2);// 创建标题第一列
        cell62.setCellValue(String.valueOf(String.format("%.2f" , map.get("sumQuoteWeek")))); // 设置标题
        cell62.setCellStyle(style); // 设置标题样式
        HSSFCell cell63 = row6.createCell(3);// 创建标题第一列
        cell63.setCellValue(String.valueOf(String.format("%.2f" , map.get("kdjWeek")))); // 设置标题
        cell63.setCellStyle(style); // 设置标题样式

        //创建第八行
        HSSFRow row8 = sheet.createRow((int) 8);
        HSSFCell cell80 = row8.createCell(0);// 创建标题第一列
        cell80.setCellValue("历史累计发生数"); // 设置标题
        cell80.setCellStyle(style); // 设置标题样式
        HSSFCell cell81 = row8.createCell(1);// 创建标题第一列
        cell81.setCellValue(String.valueOf(map.get("orderNumTotal"))); // 设置标题
        cell81.setCellStyle(style); // 设置标题样式
        HSSFCell cell82 = row8.createCell(2);// 创建标题第一列
        cell82.setCellValue(String.valueOf(String.format("%.2f" , map.get("totalPriceTotal")))); // 设置标题
        cell82.setCellStyle(style); // 设置标题样式
        HSSFCell cell83 = row8.createCell(3);// 创建标题第一列
        cell83.setCellValue(String.valueOf(String.format("%.2f" , map.get("kdjOrderTotal")))); // 设置标题
        cell83.setCellStyle(style); // 设置标题样式

        //创建第九行
        HSSFRow row9 = sheet.createRow((int) 9);
        HSSFCell cell90 = row9.createCell(0);// 创建标题第一列
        cell90.setCellValue(year + "年累计发生数"); // 设置标题
        cell90.setCellStyle(style); // 设置标题样式
        HSSFCell cell91 = row9.createCell(1);// 创建标题第一列
        cell91.setCellValue(String.valueOf(map.get("orderNumYear"))); // 设置标题
        cell91.setCellStyle(style); // 设置标题样式
        HSSFCell cell92 = row9.createCell(2);// 创建标题第一列
        cell92.setCellValue(String.valueOf(String.format("%.2f" , map.get("totalPriceYear")))); // 设置标题
        cell92.setCellStyle(style); // 设置标题样式
        HSSFCell cell93 = row9.createCell(3);// 创建标题第一列
        cell93.setCellValue(String.valueOf(String.format("%.2f" , map.get("kdjOrderYear")))); // 设置标题
        cell93.setCellStyle(style); // 设置标题样式

        //创建第十行
        HSSFRow row10 = sheet.createRow((int) 10);
        HSSFCell cell100 = row10.createCell(0);// 创建标题第一列
        cell100.setCellValue("本周期累计发生数"); // 设置标题
        cell100.setCellStyle(style); // 设置标题样式
        HSSFCell cell101 = row10.createCell(1);// 创建标题第一列
        cell101.setCellValue(String.valueOf(map.get("orderNumWeek"))); // 设置标题
        cell101.setCellStyle(style); // 设置标题样式
        HSSFCell cell102 = row10.createCell(2);// 创建标题第一列
        cell102.setCellValue(String.valueOf(String.format("%.2f" , map.get("totalPriceWeek")))); // 设置标题
        cell102.setCellStyle(style); // 设置标题样式
        HSSFCell cell103 = row10.createCell(3);// 创建标题第一列
        cell103.setCellValue(String.valueOf(String.format("%.2f" , map.get("kdjOrderWeek")))); // 设置标题
        cell103.setCellStyle(style); // 设置标题样式

        //创建第十二行
        HSSFRow row12 = sheet.createRow((int) 12);
        HSSFCell cell120 = row12.createCell(0);// 创建标题第一列
        cell120.setCellValue("历史累计发生数"); // 设置标题
        cell120.setCellStyle(style); // 设置标题样式
        HSSFCell cell121 = row12.createCell(1);// 创建标题第一列
        cell121.setCellValue(String.valueOf(map.get("selfOrderNumTotal"))); // 设置标题
        cell121.setCellStyle(style); // 设置标题样式
        HSSFCell cell122 = row12.createCell(2);// 创建标题第一列
        cell122.setCellValue(String.valueOf(String.format("%.2f" , map.get("selfTotalPriceTotal")))); // 设置标题
        cell122.setCellStyle(style); // 设置标题样式
        HSSFCell cell123 = row12.createCell(3);// 创建标题第一列
        cell123.setCellValue(String.valueOf(String.format("%.2f" , map.get("kdjSelfOrderTotal")))); // 设置标题
        cell123.setCellStyle(style); // 设置标题样式

        //创建第十三行
        HSSFRow row13 = sheet.createRow((int) 13);
        HSSFCell cell130 = row13.createCell(0);// 创建标题第一列
        cell130.setCellValue(year + "年累计发生数"); // 设置标题
        cell130.setCellStyle(style); // 设置标题样式
        HSSFCell cell131 = row13.createCell(1);// 创建标题第一列
        cell131.setCellValue(String.valueOf(map.get("selfOrderNumYear"))); // 设置标题
        cell131.setCellStyle(style); // 设置标题样式
        HSSFCell cell132 = row13.createCell(2);// 创建标题第一列
        cell132.setCellValue(String.valueOf(String.format("%.2f" , map.get("selfTotalPriceYear")))); // 设置标题
        cell132.setCellStyle(style); // 设置标题样式
        HSSFCell cell133 = row13.createCell(3);// 创建标题第一列
        cell133.setCellValue(String.valueOf(String.format("%.2f" , map.get("kdjSelfOrderYear")))); // 设置标题
        cell133.setCellStyle(style); // 设置标题样式

        //创建第十四行
        HSSFRow row14 = sheet.createRow((int) 14);
        HSSFCell cell140 = row14.createCell(0);// 创建标题第一列
        cell140.setCellValue("本周期累计发生数"); // 设置标题
        cell140.setCellStyle(style); // 设置标题样式
        HSSFCell cell141 = row14.createCell(1);// 创建标题第一列
        cell141.setCellValue(String.valueOf(map.get("selfOrderNumWeek"))); // 设置标题
        cell141.setCellStyle(style); // 设置标题样式
        HSSFCell cell142 = row14.createCell(2);// 创建标题第一列
        cell142.setCellValue(String.valueOf(String.format("%.2f" , map.get("selfTotalPriceWeek")))); // 设置标题
        cell142.setCellStyle(style); // 设置标题样式
        HSSFCell cell143 = row14.createCell(3);// 创建标题第一列
        cell143.setCellValue(String.valueOf(String.format("%.2f" , map.get("kdjSelfOrderWeek")))); // 设置标题
        cell143.setCellStyle(style); // 设置标题样式

        //创建第十八行
        HSSFRow row18 = sheet.createRow((int) 18);
        HSSFCell cell180 = row18.createCell(0);// 创建标题第一列
        cell180.setCellValue("指标"); // 设置标题
        cell180.setCellStyle(style); // 设置标题样式
        HSSFCell cell181 = row18.createCell(1);// 创建标题第一列
        cell181.setCellValue("入驻采购商数"); // 设置标题
        cell181.setCellStyle(style); // 设置标题样式
        HSSFCell cell182 = row18.createCell(2);// 创建标题第一列
        cell182.setCellValue("入驻供应商数"); // 设置标题
        cell182.setCellStyle(style); // 设置标题样式
        HSSFCell cell183 = row18.createCell(3);// 创建标题第一列
        cell183.setCellValue("深度会员数"); // 设置标题
        cell183.setCellStyle(style); // 设置标题样式
        HSSFCell cell184 = row18.createCell(4);// 创建标题第一列
        cell184.setCellValue("深度会员收入金额"); // 设置标题
        cell184.setCellStyle(style); // 设置标题样式

        //创建第十九行
        HSSFRow row19 = sheet.createRow((int) 19);
        HSSFCell cell190 = row19.createCell(0);// 创建标题第一列
        cell190.setCellValue("历史累计发生数"); // 设置标题
        cell190.setCellStyle(style); // 设置标题样式
        HSSFCell cell191 = row19.createCell(1);// 创建标题第一列
        cell191.setCellValue(String.valueOf(map.get("purcharserTotal"))); // 设置标题
        cell191.setCellStyle(style); // 设置标题样式
        HSSFCell cell192 = row19.createCell(2);// 创建标题第一列
        cell192.setCellValue(String.valueOf(map.get("providerTotal"))); // 设置标题
        cell192.setCellStyle(style); // 设置标题样式
        HSSFCell cell193 = row19.createCell(3);// 创建标题第一列
        cell193.setCellValue(String.valueOf(map.get("totalVip"))); // 设置标题
        cell193.setCellStyle(style); // 设置标题样式
        HSSFCell cell194 = row19.createCell(4);// 创建标题第一列
        cell194.setCellValue(""); // 设置标题
        cell194.setCellStyle(style); // 设置标题样式

        //创建第二十行
        HSSFRow row20 = sheet.createRow((int) 20);
        HSSFCell cell200 = row20.createCell(0);// 创建标题第一列
        cell200.setCellValue(year + "年累计发生数"); // 设置标题
        cell200.setCellStyle(style); // 设置标题样式
        HSSFCell cell201 = row20.createCell(1);// 创建标题第一列
        cell201.setCellValue(String.valueOf(map.get("purcharserYear"))); // 设置标题
        cell201.setCellStyle(style); // 设置标题样式
        HSSFCell cell202 = row20.createCell(2);// 创建标题第一列
        cell202.setCellValue(String.valueOf(map.get("providerYear"))); // 设置标题
        cell202.setCellStyle(style); // 设置标题样式
        HSSFCell cell203 = row20.createCell(3);// 创建标题第一列
        cell203.setCellValue(String.valueOf(map.get("yearVip"))); // 设置标题
        cell203.setCellStyle(style); // 设置标题样式
        HSSFCell cell204 = row20.createCell(4);// 创建标题第一列
        cell204.setCellValue(""); // 设置标题
        cell204.setCellStyle(style); // 设置标题样式

        //创建第二十一行
        HSSFRow row21 = sheet.createRow((int) 21);
        HSSFCell cell210 = row21.createCell(0);// 创建标题第一列
        cell210.setCellValue("本周期累计发生数"); // 设置标题
        cell210.setCellStyle(style); // 设置标题样式
        HSSFCell cell211 = row21.createCell(1);// 创建标题第一列
        cell211.setCellValue(String.valueOf(map.get("purcharserWeek"))); // 设置标题
        cell211.setCellStyle(style); // 设置标题样式
        HSSFCell cell212 = row21.createCell(2);// 创建标题第一列
        cell212.setCellValue(String.valueOf(map.get("providerWeek"))); // 设置标题
        cell212.setCellStyle(style); // 设置标题样式
        HSSFCell cell213 = row21.createCell(3);// 创建标题第一列
        cell213.setCellValue(String.valueOf(map.get("weekVip"))); // 设置标题
        cell213.setCellStyle(style); // 设置标题样式
        HSSFCell cell214 = row21.createCell(4);// 创建标题第一列
        cell214.setCellValue(""); // 设置标题
        cell214.setCellStyle(style); // 设置标题样式


        // 第六步，将文件存到浏览器设置的下载位置
        String filename = "安装通数据周报.xls";
        response.setContentType("application/ms-excel;charset=UTF-8");
        response.setHeader("Content-Disposition", "attachment;filename="
                .concat(String.valueOf(URLEncoder.encode(filename, "UTF-8"))));
        OutputStream out = response.getOutputStream();
        try {
            wb.write(out);// 将数据写出去
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            out.close();
        }

    }

}
